Understanding prolog [lists]
        Posted  
        
            by wwrob
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by wwrob
        
        
        
        Published on 2010-04-27T18:34:31Z
        Indexed on 
            2010/04/28
            15:43 UTC
        
        
        Read the original article
        Hit count: 241
        
I am to write a program that does this:
?- pLeap(2,5,X,Y).
X = 2,
Y = 3 ;
X = 3,
Y = 4 ;
X = 4,
Y = 5 ;
X = 5,
Y = 5 ;
false.
(gives all pairs X,X+1 between 2 and 5, plus the special case at the end).
This is supposedly the solution. I don't really understand how it works, could anyone guide me through it?
pLeap(X,X,X,X).
pLeap(L,H,X,Y) :-
        L<H,
        X is L,
        Y is X+1.
pLeap(L,H,X,Y) :-
        L=<H,
        L1 is L+1,
        pLeap(L1,H,X,Y).
I'd do it simply like this:
pLeap(L,H,X,Y) :-
        X >= L,
        X =< H,
        Y is X+1.
Why doesn't it work (ignoring the special case at the end)?
© Stack Overflow or respective owner